//7-3 Shape类-2
/*
定义一个形状类Shape，提供计算周长getPerimeter()和面积getArea()的函数
定义一个子类正方形类Square继承自Shape类，拥有边长属性，提供构造函数，能够计算周长getPerimeter()和面积getArea()
定义一个子类长方形类Rectangle继承自Square类，拥有长、宽属性，提供构造函数，能够计算周长getPerimeter()和面积getArea()
定义一个子类圆形类Circle继承自Shape，拥有半径属性，提供构造函数，能够计算周长getPerimeter()和面积getArea()
在main函数中，分别构造三个Shape类的变量，分别指向一个Square、Rectangle、Circle对象，并输出他们的周长、面积.
 */

/*
输入格式:
正方形类的边长
长方形类的长宽
圆类的半径

输出格式:
正方形的周长、面积
长方形的周长、面积
圆形的周长、面积
 */
/*
输入样例:
在这里给出一组输入。例如：

1
1 2
2
输出样例:
在这里给出相应的输出。例如：

4.00 1.00
6.00 2.00
12.57 12.57
 */
import java.util.Scanner;
import java.lang.Math;
public class J_PTAexperience4_4 {
    public static void main(String[] args){
        Scanner sc =new Scanner(System.in);
        double l1=sc.nextDouble();
        double l2=sc.nextDouble();
        double w1=sc.nextDouble();
        double rr=sc.nextDouble();
        Square s =new Square(l1);
        Rectangle r =new Rectangle(l2,w1);
        Circle c =new Circle(rr);
        s.getPerimeter();
        s.getArea();
        r.getPerimeter();
        r.getArea();
        c.getPerimeter();
        c.getArea();
    }

}

abstract class Shape{
    abstract public void getPerimeter();
    abstract public void getArea();
}

class Square extends Shape{
    private double length;
    Square(double length){
        this.length=length;
    }
    public void getPerimeter(){
        double ll =4*length;
        System.out.printf("%.2f ",ll);
    }
    public void getArea(){
        double s =Math.pow(length,2);
        System.out.printf("%.2f\n",s);
    }
}

class Rectangle extends Shape{
    private double length;
    private double width;
    Rectangle(double length,double width){
        this.length=length;
        this.width=width;
    }
    public void getPerimeter(){
        double ll =2*length+2*width;
        System.out.printf("%.2f ",ll);
    }
    public void getArea(){
        double s =width*length;
        System.out.printf("%.2f\n",s);
    }
}

class Circle extends Shape{
    private double rr;
    Circle(double rr){
        this.rr=rr;
    }
    public void getPerimeter(){
        double ll =2*rr*Math.PI;
        System.out.printf("%.2f ",ll);
    }
    public void getArea(){
        double s =Math.PI*Math.pow(rr,2);
        System.out.printf("%.2f",s);
    }
}